package com.dkd.manage.service;

import java.util.List;
import com.dkd.manage.domain.Task;

/**
 * 工单Service接口
 *
 * @author dkd
 * @date 2025-11-10
 */
public interface ITaskService
{
    /**
     * 查询工单
     *
     * @param id 工单主键
     * @return 工单
     */
    public Task selectTaskById(Long id);

    /**
     * 根据工单编号查询工单
     *
     * @param taskNo 工单编号
     * @return 工单
     */
    public Task selectTaskByTaskNo(String taskNo);

    /**
     * 查询工单列表
     *
     * @param task 工单
     * @return 工单集合
     */
    public List<Task> selectTaskList(Task task);

    /**
     * 新增工单
     *
     * @param task 工单
     * @return 结果
     */
    public int insertTask(Task task);

    /**
     * 修改工单
     *
     * @param task 工单
     * @return 结果
     */
    public int updateTask(Task task);

    /**
     * 批量删除工单
     *
     * @param ids 需要删除的工单主键集合
     * @return 结果
     */
    public int deleteTaskByIds(Long[] ids);

    /**
     * 删除工单信息
     *
     * @param id 工单主键
     * @return 结果
     */
    public int deleteTaskById(Long id);

    /**
     * 取消工单
     * 只有"待处理"和"进行中"状态的工单可被取消
     *
     * @param id 工单ID
     * @param cancelReason 取消原因
     * @return 结果
     */
    public int cancelTask(Long id, String cancelReason);
}
